package com.atguigu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestViewController {
    /**
     * ThymeleafView
     * 当控制器方法中所设置的视图名称没有任何前缀时，此时的视图名称会被SpringMVC配置文件中所配置
     * 的视图解析器解析，视图名称拼接视图前缀和视图
     * 后缀所得到的最终路径，会通过转发的方式实现跳转
     * @return
     */
    @RequestMapping("/testHello")
    public String testHello(){
        return "hello";
    }

    /**
     * 转发视图
     * SpringMVC中默认的转发视图是InternalResourceView
     * SpringMVC中创建转发视图的情况：
     * 当控制器方法中所设置的视图名称以"forward:"为前缀时，创建InternalResourceView视图，此时的视
     * 图名称不会被SpringMVC配置文件中所配置的视图解析器解析，而是会将前缀"forward:"去掉，剩余部
     * 分作为最终路径通过转发的方式实现跳转
     * @return
     */
    @RequestMapping("/testForward")
    public String testForward(){
        return "forward:/testHello";
    }

    /**
     * 、重定向视图
     * SpringMVC中默认的重定向视图是RedirectView
     * 当控制器方法中所设置的视图名称以"redirect:"为前缀时，创建RedirectView视图，此时的视图名称不
     * 会被SpringMVC配置文件中所配置的视图解析器解析，而是会将前缀"redirect:"去掉，剩余部分作为最
     * 终路径通过重定向的方式实现跳转
     *
     * 注意：重定向视图在解析时，会先将redirect:前缀去掉，然后会判断剩余部分是否以/开头，若是则会自
     * 动拼接上下文路径
     * @return
     */
    @RequestMapping("/testRedirect")
    public String testRedirect(){
        return "redirect:/testHello";
    }

}
